//此文件用来koa和数据库相互存值、返回值
const Router = require('koa-router')//使用路由模块
const mongoose = require('mongoose')
let router = new Router()

//用户注册路由
router.post('/register', async(ctx) => {
        //插入到数据库，如果成功插入就用回调函数返回几个自己定义的状态值（注：不是从数据库返回的值，是回调函数返回的自定义值）
        const user = mongoose.model('user')//引入集合user
        let newUser = new user(ctx.request.body)//ctx.request.body是从前端接收过来的数据，比如username、password
        await newUser.save().then(() =>{
            //插入数据库成功,返回自定义的状态值code，message给koa，然后前端用axios查看自定义的状态值，并根据状态值写判断语句。
            ctx.body = {
                code:200,
                message:'注册成功'
            }
        }).catch(error =>{
            ctx.body = {
                code:500,
                message:error
            }
        })
    })

//用户登录路由
router.post('/login',async(ctx)=>{
    let loginuser  = ctx.request.body//得到前端用户输入的用户名密码，将其包装成对象
    let _username = loginuser.username
    let _password = loginuser.password
    
    //以下代码是写登录接口
    //查找数据库user集合里是否匹配的上
    const user = mongoose.model('user')//引入数据库user集合
    //mongoose所有的API都支持promise,所以这里要用promise回调函数返回数据
    await user.findOne({username:_username}).exec().then(async(result)=>{
        console.log(result)//result是promise对象返回的所有关于username的数据
        if(result){
            let newuser = new user()
            await newuser.comparePassword(_password,result.password)//密码比对,comparePassword()方法是自己写的
            .then(isMath =>{
                console.log(isMath)
                ctx.body = {code:200,message:isMath}
            }).catch(error =>{
                console.log(error)
                ctx.body={code:500,message:error}
            })
        }else{
            ctx.body = {code:500,message:'用户名不存在'}
        }
    })

})
module.exports = router